<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // ES6 允许使用 箭头 (=>) 定义函数
        // 这样的书写更加简洁

        // let fn = function () {

        // }

        let fn = (a, b) => {
            return a + b
        }
        //调用
        let sum = fn(1,2)
        console.log(sum)


        // 1.this是静态的, 始终指向函数声明时所在作用域下的 this 的值
        function getName () {
            console.log(this.name)
        }
        let getName2 = () => {
            console.log(this.name)  
        }

        // 设置window对象的name属性
        window.name = '尚硅谷'
        const school = {
            name: 'atguigu'
        }

        //直接调用
        // getName()
        // getName2()

        //call方法调用
        getName.call(school) // atguigu
        getName2.call(school) // 尚硅谷


        // 2.不能作为构造函数实例化对象
        let Person = (name, age) => {
            this.name = name
            this.age = age
        }

        // let me = new Person('xiao', 30)
        // console.log(me)

        // 3.不能使用 arguments 变量
        // let fn2 = () => {
        //     console.log(arguments) //undefind
        // }
        // fn2(1,2,3)

        //4.简写

            // 1.省略小括号,当形参有且只有一个的时候
            // let add = (n) => {
            //     return n + n
            // }
            let add = n => {
                return n + n
            }
            console.log(add(9))

            // 2.省略花括号,当代码体只有一条语句的时候,此时reutrn 必须省略
            // 而且语句的执行结果就是函数的返回值
            // let pow = (n) => {
            //     return n * n
            // }
            let pow = n => n * n

            console.log(pow(9))

            let pp = n => console.log(n)
            pp('xxxx')

    </script>
</body>
</html>